package br.com.tiespec.ejb.Ejb;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;

import br.com.tiespec.ejb.Dao.AtorDAO;
import br.com.tiespec.ejb.Dao.CenarioDAO;
import br.com.tiespec.ejb.Dao.DadoDAO;
import br.com.tiespec.ejb.Dao.DescricaoEstendidaDAO;
import br.com.tiespec.ejb.EjbInterface.DescricaoEstendidaInterface;
import br.com.tiespec.model.Enum.TipoSortOrder;
import br.com.tiespec.model.Modelo.Ator;
import br.com.tiespec.model.Modelo.Cenario;
import br.com.tiespec.model.Modelo.Dado;
import br.com.tiespec.model.Modelo.DescricaoEstendida;
import br.com.tiespec.model.Util.DAOException;
import br.com.tiespec.model.Util.RNException;

@Stateless(mappedName = "ConfigDescricaoImpl")
@Local(value=DescricaoEstendidaInterface.class)
public class DescricaoEstendidaImpl implements DescricaoEstendidaInterface  {

	private static final long serialVersionUID = 1L;

	@EJB DescricaoEstendidaDAO deDao;
	@EJB DadoDAO dDao;
	@EJB AtorDAO aDao;
	@EJB CenarioDAO cDao;
	
	@Override
	public void salvarDescricaoEstendida(DescricaoEstendida deInstance)
			throws RNException {
		try {
			deDao.save(deInstance);
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}

	@Override
	public void atualizarDescricaoEstendida(DescricaoEstendida deInstance)
			throws RNException {
		try {
			deDao.update(deInstance);
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}
	
	@Override
	public DescricaoEstendida selecionarDescricao(Long id) {
		return deDao.selecionar(id);
	}
	
	@Override
	public DescricaoEstendida selecionarDescricaoCompleta(Long id) {
		return deDao.selecionarCompleta(id);
	}
	
	@Override
	public List<DescricaoEstendida> listarDescricaoEstendidas(int first,
			int pageSize, String sortField, TipoSortOrder sortOrder, Long idClientePortal,
			String varCodigo, String varNome, String varProjeto) {
		return deDao.listarDescricaoEstendida(first, pageSize, sortField, sortOrder, idClientePortal, varCodigo, varNome, varProjeto);
	}
	
	@Override
	public int countDescricaoEstendidas(Long idClientePortal, String varCodigo, String varNome,
			String varProjeto) {
		return deDao.countDescricaoEstendida(idClientePortal, varCodigo, varNome, varProjeto);
	}

	@Override
	public List<Dado> listarDados(int first, int pageSize, String sortField,
			TipoSortOrder convertePrimeFaces, Long idDescricao) {
		return dDao.listarDado(first, pageSize, sortField, convertePrimeFaces, idDescricao);
	}

	@Override
	public int countDados(Long idDescricao) {
		return dDao.countDado(idDescricao);
	}

	@Override
	public Dado selecionarDado(Long id) {
		return dDao.selecionar(id);
	}

	@Override
	public void salvarDado(Dado dadoInstance) throws RNException {
		try {
			dDao.save(dadoInstance);
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}

	@Override
	public void atualizarDado(Dado dadoInstance) throws RNException {
		try {
			dDao.update(dadoInstance);
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}

	@Override
	public void excluirDado(Dado dadoInstance) throws RNException {
		try {
			dDao.excluir(dadoInstance.getId());
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}
	
	@Override
	public List<Ator> listarAtores(Long idClientePortal, String query) {
		return aDao.buscarAtorPorNomeECliente(idClientePortal, query);
	}
	
	@Override
	public List<Ator> listarAtores(Long idClientePortal, String[] strArray) {
		return aDao.buscarAtores(idClientePortal, strArray);
	}
	
	@Override
	public List<Ator> listarAtores(Long idClientePortal) {
		return aDao.buscarAtores(idClientePortal);
	}
	
	@Override
	public List<DescricaoEstendida> listarDescricaoEstendidas(Long idProjeto) {
		return deDao.listarDescricaoEstendida(idProjeto);
	}
	
	@Override
	public List<Cenario> listarCenarios(Long idDescricaoEstendida) {
		return cDao.listarCenarios(idDescricaoEstendida);
	}
}
